package service;

import java.io.Serializable;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import util.UtilColecao;
import util.UtilMensagem;
import dao.GenericDAO;
import dao.GrupoProdutoDAO;
import dao.ProdutoDAO;
import entity.GrupoProduto;
import exceptions.ServiceException;

/**
 * <p>
 * ClienteService
 * </p>
 * <p>
 * </p>
 * 
 * @author vinicius.silva
 * @version 1.0
 */
@Service
public class GrupoProdutoServiceImpl extends
	ManutencaoServiceImpl<GrupoProduto> implements GrupoProdutoService,
	Serializable {

    private static final long serialVersionUID = 2892712219712130868L;

    @Autowired
    private GrupoProdutoDAO grupoProdutoDAO;

    @Autowired
    private ProdutoDAO produtoDAO;

    @Override
    public GrupoProduto criarNovoGrupoProduto() {
	GrupoProduto grupoProduto = new GrupoProduto();
	grupoProduto.setAtivo(true);
	return grupoProduto;
    }

    @Override
    @Transactional
    public void remover(GrupoProduto grupoProduto) {
	if (!UtilColecao.isColecaoVazia(produtoDAO
		.buscarProdutosPorGrupo(grupoProduto))) {
	    throw new ServiceException(UtilMensagem.getMensagem("MSG_0020"));
	}
	super.remover(grupoProduto);
    }

    @Override
    public GenericDAO<GrupoProduto> getDAO() {
	return grupoProdutoDAO;
    }
}
